using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NHibernate;
using NHibernate.Criterion;
using Didsoft.DataAccess.Hibernate;
using Didsoft.DataAccess.Contracts;
using SIOGDE.AccesoDatos.Entidades;
using SIOGDE.AccesoDatos.Contratos;

namespace SIOGDE.AccesoDatos.Contexto
{
   public class EvaluacionDestinoAccesoDatos : DataAccessBasic<EvaluacionDestino>, IEvaluacionDestinoAccesoDatos
   {
     public EvaluacionDestinoAccesoDatos()
     {
     }
     
     /// <summary>
     /// Devuelve una lista IList<EvaluacionDestino> con todas las ocurrencias encontradas, en base a filtro.
     /// </summary>
     /// <param name="filtro"></param>
     /// <returns></returns>
     public IList<EvaluacionDestino> BuscarPorFiltro(string filtro)
     {
             //ICriteria criteria = Session.CreateCriteria(typeof(EvaluacionDestino));
             //criteria.Add(Expression.Like("Nombre", filtro+"%")); 
             //return criteria.List<EvaluacionDestino>();

             var query = Session.CreateQuery("from EvaluacionDestino da where da.Descripcion like :filtro");
             query.SetAnsiString("filtro", filtro + "%");
         return query.List<EvaluacionDestino>();

     }


     public IList<EvaluacionDestino> GetPorPersonaGuid(string guid)
     {
         var query = from ed in Session.QueryOver<EvaluacionDestino>()
                     where ed.DestinoAsignado.Persona.Guid.Equals(guid)
                     select ed;         
         return query.List<EvaluacionDestino>();
     }


     public IList<EvaluacionDestino> GetPorDestinoGuid(string guid)
     {
         //var query = from ed in Session.QueryOver<EvaluacionDestino>()
         //            where ed.DestinoAsignado.Guid.Equals(guid)
         //            select ed;
         //return query.List<EvaluacionDestino>();

         var hql = "from EvaluacionDestino ed where ed.DestinoAsignado.Guid = :guid";
         var query = Session.CreateQuery(hql);
         query.SetAnsiString("guid", guid);
         return query.List<EvaluacionDestino>();
     }
   }
}

